//Thursday, November 05 2009
#include <iostream>
#include <string>
#include <vector>
#include <map>
#include <queue>
#include <sstream>
#include <algorithm>

using namespace std;

template<class T> inline void checkmax(T &a,T b){if(b>a) a=b;}

class NotTwo
{
public:
	int maxStones(int width, int height)
	{
		vector<vector<bool> > v(height, vector<bool>(width, false));
// 		for(int i=0; i<height; i++)
// 		{
// 			for(int j=0; j<width; j++)
// 			{
// 				cout << v[i][j];
// 			}
// 			cout<<endl;
// 		}
		int ret = 0;
		for(int i=0; i<height; i++)
		{
			for(int j=0; j<width; j++)
			{
//				int sz = ret;
				if(i-2<0 && j-2<0)
				{
					v[i][j] = true;
					ret++;
				}
				else if(i<2 && j>=2)
				{
					if(v[i][j-2]==false)
					{
						v[i][j] = true;
						ret++;
					}
				}
				else if(i>=2 && j<2)
				{
					if(v[i-2][j] == false)
					{
						v[i][j] = true;
						ret++;
					}
				}
				else
				{
					if(v[i-2][j] == false && v[i][j-2] == false)
					{
						v[i][j] = true;
						ret++;
					}
				}
// 				if(sz < ret) cout<<'*';
// 				else cout << '-';
			}
			cout << endl;
		}
		return ret;
	}
};
